# 函数的声明
# def是可执行语句,这意味着函数直到被调用前,都是不存在的
# 直到程序调用函数时,def语句才会创建一个新的函数对象,并赋予其名字

def my_func1():
    print('my func1')
    # 在函数内部可以调用其它函数,次数函数的声明顺序就不重要了
    # 因为def是可执行语句,函数在调用之前都不存在,只需保证调用时,所需的函数都已经声明定义过了就可以
    my_func2()


def my_func2():
    print('my func2')
    my_func3()
    my_func3(10)


# 函数可以定义默认参数:如果调用方不传参,则参数为默认值。如果传了参,则会覆盖默认值。
def my_func3(a=0):
    print(f'my func3, a = {a}')


if __name__ == '__main__':
    # 主程序调用函数时,必须确保这个函数之前已经定义过,否则就会报错
    my_func1()
